package commons;

import java.util.ArrayList;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import model.PathsFromSchema;

@SuppressWarnings("serial")
public class SchemaTableModel extends AbstractTableModel {
	private List<PathsFromSchema> dados;
    private String[] colunas = {"Caminho", "Nome do Arquivo", "Principal"};
     
    public SchemaTableModel(){
        dados = new ArrayList<PathsFromSchema>();
    }
    
    public SchemaTableModel(List<PathsFromSchema> list){
        dados = list;
    }
     
    public void addRow(PathsFromSchema p){
        this.dados.add(p);
        this.fireTableDataChanged();
    }
 
    public void clearAll()
    {
    	this.dados.clear();
    	this.fireTableDataChanged();
    }
    public String getColumnName(int num){
        return this.colunas[num];
    }
 
    @Override
    public int getRowCount() {
        return dados.size();
    }
 
    @Override
    public int getColumnCount() {
        return colunas.length;
    }
 
    @Override
    public Object getValueAt(int linha, int coluna) {
        switch(coluna){
            case 0: return dados.get(linha).getLocationPath();
            case 1: return dados.get(linha).getNameFile();
            case 2: return dados.get(linha).getType();
       
        }   
        return null;
    }
    
    public void defineBoss(int linha)
    {
    	for (int c=0; c<this.dados.size(); c++)
    	{
    			this.dados.get(c).setType("");
       	}
    	this.dados.get(linha).setType("Principal");
    	this.fireTableRowsDeleted(linha, linha);
    	
    }
    
    public String getPathBoss()
    {
    	for (int c=0; c<this.dados.size(); c++)
    	{
    		if(this.dados.get(c).getType().equals("Principal"))
    			return this.dados.get(c).getLocationPath();
    	}
    	return null;
    }
    
    public String getNameBoss()
    {
    	for (int c=0; c<this.dados.size(); c++)
    	{
    		if(this.dados.get(c).getType().equals("Principal"))
    			return this.dados.get(c).getNameFile();
    	}
    	return null;
    }
    
    public void removeRow(int linha){
        this.dados.remove(linha);
        this.fireTableRowsDeleted(linha, linha);
    }
    
    public PathsFromSchema get(int linha){
        return this.dados.get(linha);
    }
    
    public boolean isCellEditable(int linha, int coluna) {
        return false;
    }
    
    public void setValueAt(Object valor, int linha, int coluna){
        if( valor == null) return;
         
        switch(coluna){
            case 0:  dados.get(linha).setLocationPath((String) valor);break;
            case 1: dados.get(linha).setNameFile((String) valor); break;
            case 2: dados.get(linha).setType((String) valor); break;
           } 
        this.fireTableRowsUpdated(linha, linha);
    }

    
    
    

}
